/*
 - Autor(es):
 -      Rommel A. Quintanilla C.
 -      Donia A. Ruelas A.
 -      Julio C. Ccahuana M.
 - Fecha: 16/05/07

 - Copyleft: (C) 2007
 - Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los
 - terminos de la Licencia Publica General de GNU segun es publicada por la Free
 - Software Foundation, de la version 2 de dicha Licencia.
 -
 - Este programa se distribuye con la esperanza de que sea util, pero SI NINGUNA
 - GARANTIA; tampoco las implicitas garantias de MERCANTILIDAD o ADECUACION A UN
 - PROPOSITO PARTICULAR. Consulte la GNU General Public License (GPL) para mas
 - detalles adjuntada a este programa. (Fichero: JuradoWeb-License.txt).
 -
 - Descripcion:
 - Servlet Registro Nuevo Usuario.
*/

package pe.edu.unap.jurado.BeansDatos;

import javax.xml.bind.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import pe.edu.unap.jurado.BeansDatos.BeanConfiguracionDatos;
import pe.edu.unap.jurado.Beans.*;

public class BeanParticipacionDatos extends BeanDatos
{
  public BeanParticipacionDatos()
  throws SQLException
  {
   fichero = new String("BeanParticipacionDatos.java");  
  }
 
 public List getListaParticipacion(String idConcurso)
 throws SQLException
 {
  List lista=new ArrayList();
  instruccion=conexion.prepareStatement("SELECT * FROM PARTICIPACION WHERE idConcurso = ?;");
  instruccion.setString(1,idConcurso);
  ResultSet resultado=instruccion.executeQuery();

  while(resultado.next())
  {
   BeanParticipacion participacion=new BeanParticipacion();
   participacion.setIdEquipo(resultado.getString(1));
   participacion.setIdConcurso(resultado.getString(2));
   participacion.setNumProblemasResueltos(resultado.getString(3));
   participacion.setNumProblemasIntentados(resultado.getString(4));
   lista.add(participacion);
  }
  return lista;
 }
 
 public List getListaRankingParticipacion(String idConcurso)
 throws SQLException
 {
  List lista=new ArrayList();
  instruccion=conexion.prepareStatement("SELECT * FROM PARTICIPACION WHERE idConcurso = ? ORDER BY numProblemasResueltos DESC,numProblemasIntentados DESC;");
  instruccion.setString(1,idConcurso);
  ResultSet resultado=instruccion.executeQuery();

  while(resultado.next())
  {
   BeanParticipacion participacion=new BeanParticipacion();
   participacion.setIdEquipo(resultado.getString(1));
   participacion.setIdConcurso(resultado.getString(2));
   participacion.setNumProblemasResueltos(resultado.getString(3));
   participacion.setNumProblemasIntentados(resultado.getString(4));  
   lista.add(participacion);
  }
  return lista;
 }
 
 public void registrarParticipacion(BeanParticipacion participacion)
 throws SQLException
 {
   instruccion=conexion.prepareStatement("INSERT INTO PARTICIPACION(idEquipo,idConcurso) VALUES (?,?);");
   instruccion.setString(1,participacion.getIdEquipo());
   instruccion.setString(2,participacion.getIdConcurso());
   instruccion.executeUpdate();
 }

 public void sumarSolucionEquipo(BeanEquipo equipo)
 throws SQLException
 {
  instruccion=conexion.prepareStatement("SELECT numProblemasResueltos FROM PARTICIPACION WHERE idEquipo = ?;");
  instruccion.setString(1,equipo.getIdEquipo());
  ResultSet resultado=instruccion.executeQuery();
  resultado.next();
  String numProblemasResueltos = new String(resultado.getString(1));
  int i_numProblemasResueltos = Integer.parseInt(numProblemasResueltos.trim());
  i_numProblemasResueltos++;
  numProblemasResueltos = String.valueOf(i_numProblemasResueltos);

  instruccion=conexion.prepareStatement("UPDATE PARTICIPACION SET numProblemasResueltos = ?  WHERE idEquipo = ?;");
  instruccion.setString(1,numProblemasResueltos);
  instruccion.setString(2,equipo.getIdEquipo());
  instruccion.executeUpdate();
 }

 public void sumarIntentoEquipo(BeanEquipo equipo)
 throws SQLException
 {
  instruccion=conexion.prepareStatement("SELECT numProblemasIntentados FROM PARTICIPACION WHERE idEquipo =?;");
  instruccion.setString(1,equipo.getIdEquipo());
  ResultSet resultado=instruccion.executeQuery();

  resultado.next();
  String numProblemasIntentados = new String(resultado.getString(1));
  int i_numProblemasIntentados = Integer.parseInt(numProblemasIntentados.trim());
  i_numProblemasIntentados++;
  numProblemasIntentados = String.valueOf(i_numProblemasIntentados);

  instruccion=conexion.prepareStatement("UPDATE PARTICIPACION SET numProblemasIntentados = ? WHERE idEquipo = ?;");
  instruccion.setString(1,numProblemasIntentados);
  instruccion.setString(2,equipo.getIdEquipo());
  instruccion.executeUpdate();
 }  
}
